#pragma once
#ifndef STRUCTURE_H
#define STRUCTURE_H

using namespace std;

#include "vertex.h"
#include "Terrain.h"

#define COST_CITADEL 100000
#define COST_SUPPLY 100
#define COST_TOWER 500

#define MAX_HP_CITADEL 1000
#define MAX_HP_SUPPLY 200
#define MAX_HP_TOWER 100

#define TOWER_ATK_RADIUS 28
#define TOWER_ATK_DAMAGE 2
#define TOWER_ATK_DELAY 1500
#define TOWER_ATK_DURATION 1000

#ifndef TEAM_T
#define TEAM_T
enum team_T {RED, BLUE};
#endif//TEAM_T

class structure
{
public:

	static enum TYPE{CITADEL, SUPPLY, TOWER};

	structure(void);
	structure(TYPE, vertex, team_T);
	~structure(void);

	bool occupy(Terrain *);
	bool occupy(Terrain *, vertex);
	void evict(Terrain *);

	vertex position;
	float radius;
	TYPE type;
	int cost;
	int hp;
	team_T team;

	// Tower attack attributes
	void *target;
	bool targetingAgent;
	float atkTimer;
};
#endif /* STRUCTURE_H */
